/**
 * 请求模块
 */
 import axios from 'axios'
//  import store from '@/store'
//  import JSONBig from 'json-bigint' 
//  import router from '../router'
 // 用了路由跳转 所以需要引入路由
 
 const request = axios.create({
   baseURL: 'http://ttapi.research.itcast.cn/' ,// 接口的基准路径
   // data: 后端返回的原始数据，说白了就是 JSON 格式的字符串
//    transformResponse: [function (data) {
//      try {
//        return JSONBig.parse(data)
//      } catch (err) {
//        return data
//      }
 
//      // axios 默认会在内部这样来处理后端返回的数据
//      // return JSON.parse(data)
//    }]
 })
 
 // 请求拦截器
//  request.interceptors.request.use(function (config) {
//    // 请求发起会经过这里
//    // config：本次请求的请求配置对象
//    const { user } = store.state
//    // 当用户登录和 有token时  每次请求携带上token
//    if (user && user.token) {
//      config.headers.Authorization = `Bearer ${user.token}`
//    }
 
//    // 注意：这里务必要返回 config 配置对象，否则请求就停在这里出不去了
//    return config
//  }, function (error) {
//    // 如果请求出错了（还没有发出去）会进入这里
//    return Promise.reject(error)
//  })
 
 // 响应拦截器
 request.interceptors.response.use(function (response) {
   // 成功之后 把信息 return 出去
   // console.log(response);
   return response
 }, 
 // 响应出错 处罚的回调函数
 function (error) {
   // 如果请求出错了会进入这里
   // 首先由错误信息, 然后错误信息为 401  证明token过期 需要登录
//    if (error.response && error.response.status == 401) {
//      // 再判断 如果 没有 token 或者没有 refresh_token  就跳到登录页面
//      if (!store.state.user || !store.state.user.refresh_token) {
//        return router.push('/login')
//      }
//      // 只有当用有refresh_toekn的时候，才能发起请求
//      try{
//        axios({
//          url: 'http://ttapi.research.itcast.cn/app/v1_0/authorizations',
//          method: 'PUT',
//          headers: {
//            'Content-Type': 'application/x-www-form-urlencoded',
//            Authorization: `Bearer ${store.state.user.refresh_token}`
//          }
//        }).then((res)=>{
//          console.log('刷新成功',res);
//          store.commit('setUser', {
//            token: res.data.data.token,
//            refresh_token: store.state.user.refresh_token
//          })
//          return request(error.config)
//        })
//      }catch(err){
//        router.push('/login')
//      }
//    }
   return Promise.reject(error)
 })
 
 export default request
 